1. Field
Embodiments of the invention relate to allocating and managing identifiers using a shared index set across products.
2. Description of the Related Art
Any manufacturer of products (e.g., consumer products, pharmaceutical drugs or automobile parts) wants to track the products as they move in a supply chain. In order to track each individual product (or “individual unit”) of a set of products, the individual product is uniquely identified, within a same class of products, using some sort of number or identifier (ID). The general term used in the industry for this identifier is “serial ID”. Depending on the type of the products, packaging level, and the technology used to tag the serial ID (e.g., bar code, Radio Frequency Identification (RFID), etc.), there are various encoding schemes and standards to encode the serial ID.
Serialization is important for any traceability solution, and many of the traceability software products in the market offer this capability only partially. For example, some traceability software supports only allocation of sequential numbers. Managing sequential numbers is straight forward. The complexity lies in managing random numbers.
The European Federation of Pharmaceuticals Industries and Association (EFPIA) has issued European Pack Coding Guidelines. The EFPIA represents the pharmaceutical industry operating in Europe.
The EFPIA came up with the European Pack Coding Guidelines for the serial IDs. The European Pack Coding Guidelines, in Section 1.1.2.1, describe how random numbers should be generated. Moreover, the European Pack Coding Guidelines describe that, in order to provide a reasonable level of complexity within the serial number, the probability that a valid serial number can be ‘guessed’ should be a minimum of 1 in 10,000.
There are two categories of solutions to guarantee uniqueness. A first category includes a process that uses a set of well-defined instructions (e.g., an algorithm) to guarantee uniqueness (e.g., Universally Unique Identifier (UUID) generators) and provides fast generation. However, this first category has several drawbacks. For example, a UUID generator uses network Internet Protocol (IP), time, and other factors to generate fixed length IDs (usually 128 bits). Also, it is not possible to control the space from which a serial ID is generated. Moreover, UUID's are not enumerable.
A second category includes guaranteed unique ID generation after comparing against a persisted data store of previously generated serial IDs. However, this second category has several drawbacks. For example, in a mass generation scenario, the requested quantity of serial IDs may go up to a million serial IDs, and insertion/update of serial IDs in a database takes more time and leads to an unacceptable turn around time. As an example, experimentation showed that batch update is faster than batch insert, but even the batch update of one million IDs degrades the turn-around time. Also, the serial ID per product is stored as a row in a data store, and the structure of the row is (serial ID, Product, Status).